
#include "register/tilingdata_base.h"

namespace optiling {
BEGIN_TILING_DATA_DEF(MLATilingData)
  // TILING_DATA_FIELD_DEF_ARR(uint32_t, 1024, tilingParam);
  TILING_DATA_FIELD_DEF(uint32_t, sWorkSpaceSize);
  TILING_DATA_FIELD_DEF(uint32_t, pWorkSpaceSize);
  TILING_DATA_FIELD_DEF(uint32_t, oTempWorkSpaceSize);
  TILING_DATA_FIELD_DEF(uint32_t, basicWorkSpaceFloat);
  TILING_DATA_FIELD_DEF(uint32_t, oCoreWorkSpaceSize);
  TILING_DATA_FIELD_DEF(uint32_t, lWorkSpaceSize);
  TILING_DATA_FIELD_DEF(uint32_t, goWorkSpaceSize);
  TILING_DATA_FIELD_DEF(uint32_t, sSize);
  TILING_DATA_FIELD_DEF(uint32_t, num_batches);
  TILING_DATA_FIELD_DEF(uint32_t, q_heads);
  TILING_DATA_FIELD_DEF(uint32_t, embedding_size);
  TILING_DATA_FIELD_DEF(uint32_t, block_size);
  TILING_DATA_FIELD_DEF(uint32_t, max_num_blocks_per_query);
  TILING_DATA_FIELD_DEF(float, tor);
  TILING_DATA_FIELD_DEF(uint32_t, kv_heads);
  TILING_DATA_FIELD_DEF(uint32_t, tiling_head_size);
  TILING_DATA_FIELD_DEF(uint32_t, tiling_para_size);
  TILING_DATA_FIELD_DEF(uint32_t, cur_qn_blk_size);
  TILING_DATA_FIELD_DEF(uint32_t, total_block_num);
  TILING_DATA_FIELD_DEF(uint32_t, mask_type);
  TILING_DATA_FIELD_DEF(uint32_t, totalTaskNum);
  TILING_DATA_FIELD_DEF(uint32_t, maxKVSeqLen);
  TILING_DATA_FIELD_DEF(uint32_t, kv_split_core_num);
  TILING_DATA_FIELD_DEF(uint32_t, flashDecodingTaskNum);
  TILING_DATA_FIELD_DEF(uint32_t, tailbatch);
  TILING_DATA_FIELD_DEF_ARR(uint32_t, 32, q_seqlen);
  TILING_DATA_FIELD_DEF_ARR(uint32_t, 32, kv_seqlen);
  TILING_DATA_FIELD_DEF_ARR(uint32_t, 32, addr_q_high32);
  TILING_DATA_FIELD_DEF_ARR(uint32_t, 32, addr_q_loww32);
  TILING_DATA_FIELD_DEF_ARR(uint32_t, 32, addr_o_high32);
  TILING_DATA_FIELD_DEF_ARR(uint32_t, 32, addr_o_loww32);
  TILING_DATA_FIELD_DEF_ARR(uint32_t, 32, addr_mask_high32);
  TILING_DATA_FIELD_DEF_ARR(uint32_t, 32, addr_mask_loww32);

END_TILING_DATA_DEF;

REGISTER_TILING_DATA_CLASS(MLA, MLATilingData)
}
